﻿/**********************************************************************
 * @file   GUIFESubSysFormSEASubSysDialog.h
 * @brief  通过SEA子系统创建FE子系统界面类声明
 * @author liuzhonghua (liuzhonghuaszch@163.com)
 * @date   2024-12-21
 *********************************************************************/
#ifndef _GUIFESubSysFormSEASubSysDialog_H
#define _GUIFESubSysFormSEASubSysDialog_H

#include "GUISubSystemDialogAPI.h"
#include "GUIWidget/GUIDialogBase.h"
#include "FITK_Kernel/FITKCore/FITKActionOperator.h"

namespace Ui
{
    class GUIFESubSysFormSEASubSysDialog;
}

namespace Acoustics
{
    class FITKAbstractSEASubSys;
}

namespace GUI
{
    /**
     * @brief 通过SEA子系统创建FE子系统界面类
     * @author liuzhonghua (liuzhonghuaszch@163.com)
     * @date 2024-10-23
     */
    class GUISubSystemDialogAPI GUIFESubSysFormSEASubSysDialog : public GUIDialogBase
    {
        Q_OBJECT;
    public:
        /**
         * @brief    create FE object dialog
         * @param[i] oper   My Param doc
         * @param[i] parent operator
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-09
         */
        GUIFESubSysFormSEASubSysDialog(Core::FITKActionOperator* oper, QWidget* parent = nullptr);
        /**
         * @brief Destroy object
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-10-23
         */
        virtual ~GUIFESubSysFormSEASubSysDialog();
        /**
         * @brief    初始化拾取界面
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-23
         */
        virtual void init();
        
    protected:
        /**
         * @brief    初始化属性下拉框
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-23
         */
        void initPropComboBox();
        /**
         * @brief    初始化FE结构子系统拾取界面
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-09
         */
        virtual void initStructural();
        /**
         * @brief    初始化FE腔体子系统拾取界面
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-23
         */
        virtual void initAcoustic();

    protected slots:
        /**
         * @brief cencel button clicked slot
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-10-23
         */
        void on_pushButton_Cancel_clicked();
        /**
         * @brief OK button clicked slot
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-10-23
         */
        void on_pushButton_OK_clicked();
        /**
         * @brief    ElemNumber radioButton toggled slot
         * @param[i] checkState 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-13
         */
        void on_radioButton_ElemNumber_toggled(bool checkState);
        /**
         * @brief    ElemLength radioButton toggled slot
         * @param[i] checkState 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-13
         */
        void on_radioButton_ElemLength_toggled(bool checkState);
        /**
         * @brief    ElemNumber_2 radioButton toggled slot
         * @param[i] checkState
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-13
         */
        void on_radioButton_ElemNumber_2_toggled(bool checkState);
        /**
         * @brief    ElemLength_2 radioButton toggled slot
         * @param[i] checkState
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-13
         */
        void on_radioButton_ElemLength_2_toggled(bool checkState);
        /**
         * @brief     ElemLength lineEdit textChanged slot
         * @param[i] text 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-13
         */
        void on_lineEdit_ElemLength_textChanged(QString text);
        /**
         * @brief    ElemNumber lineEdit textChanged slot
         * @param[i] text 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-13
         */
        void on_lineEdit_ElemNumber_textChanged(QString text);
        /**
         * @brief     ElemLength_2 lineEdit textChanged slot
         * @param[i] text
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-13
         */
        void on_lineEdit_ElemLength_2_textChanged(QString text);
        /**
         * @brief    ElemNumber_2 lineEdit textChanged slot
         * @param[i] text
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-13
         */
        void on_lineEdit_ElemNumber_2_textChanged(QString text);
        /**
         * @brief    on comboBox_PickType currentIndexChanged
         * @param[i] index 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-23
         */
        void on_comboBox_PickType_currentIndexChanged(int index);
        /**
         * @brief    on checkBox_Pid stateChanged
         * @param[i] state 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-26
         */
        void on_checkBox_Pid_stateChanged(int state);
        /**
         * @brief    on checkBox_CoalesceNode stateChanged
         * @param[i] state
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-26
         */
        void on_checkBox_CoalesceNode_stateChanged(int state);
        /**
         * @brief    关闭槽
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        virtual void reject() override;
        /**
         * @brief    拾取完成
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-01-13
         */
        void pickDataFinished();

    protected:
        /**
         * @brief ui object
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-10-23
         */
        Ui::GUIFESubSysFormSEASubSysDialog* _ui = nullptr;
        /**
         * @brief  操作器
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-23
         */
        Core::FITKActionOperator* _oper = nullptr;
        /**
         * @brief  拾取的SEA子系统
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2025-01-13
         */
        Acoustics::FITKAbstractSEASubSys* _subSysObj = nullptr;
    };
}

#endif
